g_free (path);
g_free (dir);
}
+ else
+ {
+ /* Things failed! Fall back! Fall back! */
+
+ if (variant)
+ {
+ /* If there was a variant, try without */
+ _gtk_css_provider_load_named (provider, name, NULL);
+ }
+ else
+ {
+ /* Worst case, fall back to Raleigh */
+ g_return_if_fail (!g_str_equal (name, "Raleigh")); /* infloop protection */
+ _gtk_css_provider_load_named (provider, "Raleigh", NULL);
+ }
+ }
}
/**
"gtk-application-prefer-dark-theme", &prefer_dark_theme,
NULL);
- if (theme_name && *theme_name)
+ if (!theme_name || !*theme_name)
{
- if (prefer_dark_theme)
- provider = gtk_css_provider_get_named (theme_name, "dark");
-
- if (!provider)
- provider = gtk_css_provider_get_named (theme_name, NULL);
+ g_free (theme_name);
+ theme_name = g_strdup ("Raleigh");
}
-
- /* If we didn't find the named theme, fall back */
- if (!provider)
- provider = gtk_css_provider_get_named ("Raleigh", NULL);
+
+ provider = gtk_css_provider_get_named (theme_name, prefer_dark_theme ? "dark" : NULL);
settings_update_provider (priv->screen, &priv->theme_provider, provider);